home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / print / hpgl2ps.zip / CIRCLE.C < prev    next >
C/C++ Source or Header  |  1989-08-08  |  2KB  |  95 lines

  1. /* circle.c */
  2. #include "defn.h"
  3.  
  4. circle(type)
  5. int    type;
  6. {
  7.     float    radius;
  8.     float    start_angle = 0;
  9.     float    end_angle = 360;
  10.     float    chord_angle = 0;
  11.     float    Xc, Yc;
  12.     float    percent;
  13.     float    distance;
  14.     float    length;
  15.     float    angle;
  16.  
  17.     end_draw();
  18.  
  19.     switch (type)
  20.     {
  21.     case RDGLCIRCLE:
  22.     if (SIGNED_NUMERIC)
  23.         radius = getval() * XSCALE;
  24.     if (SIGNED_NUMERIC)
  25.         chord_angle = getval();
  26.     Xc = absX;
  27.     Yc = absY;
  28.     break;
  29.  
  30.     case CIRCLE:
  31.     if (SIGNED_NUMERIC)
  32.         absX = Xc = getval() * XSCALE + offX;
  33.     if (SIGNED_NUMERIC)
  34.         absY = Yc = getval() * YSCALE + offY;
  35.     if (SIGNED_NUMERIC)
  36.         radius = getval() * XSCALE;
  37.     if (SIGNED_NUMERIC)
  38.         start_angle = getval();
  39.     if (SIGNED_NUMERIC)
  40.         end_angle = getval();
  41.     if (SIGNED_NUMERIC)
  42.         chord_angle = getval();
  43.     break;
  44.  
  45.     case RCIRCLE:
  46.     if (SIGNED_NUMERIC)
  47.         radius = getval() * XSCALE;
  48.     if (SIGNED_NUMERIC)
  49.         start_angle = getval();
  50.     if (SIGNED_NUMERIC)
  51.         end_angle = getval();
  52.     if (SIGNED_NUMERIC)
  53.         chord_angle = getval();
  54.     angle = deg_rad * (90.0 - start_angle);
  55.     Xc = absX - radius * cos(angle);
  56.     angle = deg_rad * (90.0 - start_angle);
  57.     Yc = absY + radius * sin(angle);
  58.     break;
  59.  
  60.     case CCIRCLE:
  61.     if (SIGNED_NUMERIC)
  62.        absX = getval() * XSCALE;
  63.     if (SIGNED_NUMERIC)
  64.        absY = getval() * YSCALE;
  65.     break;
  66.  
  67.     case ACIRCLE:
  68.     Xc = absX;
  69.     Yc = absY;
  70.     if (SIGNED_NUMERIC)
  71.         radius = getval() * XSCALE;
  72.     if (SIGNED_NUMERIC)
  73.         start_angle = getval();
  74.     if (SIGNED_NUMERIC)
  75.         end_angle = getval();
  76.     if (SIGNED_NUMERIC)
  77.         chord_angle = getval();
  78.     break;
  79.  
  80.     case SCIRCLE:
  81.     if (SIGNED_NUMERIC)
  82.         percent = getval();
  83.     if (SIGNED_NUMERIC)
  84.         distance = getval();
  85.     if (SIGNED_NUMERIC)
  86.         length = getval();
  87.     fprintf(stderr,
  88.         "Warning: segment and indication lines not available yet\n");
  89.     break;
  90.     }
  91.  
  92.     printf("%g %g %g %g %g %g Ellipse\n",
  93.         Xc, Yc, radius, radius, start_angle, end_angle);
  94. }
  95.